package jp.ac.u_tokyo.dch.action.schema;

import org.apache.commons.lang.xwork.StringUtils;

import jp.ac.u_tokyo.dch.view.outputschema.CustomSchemaView;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
*
* @version 1.1
*
*/
public class CustomSchemaAction extends ActionSupport implements ModelDriven<CustomSchemaView>{


	/**
	 *シリアル番号
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * チェックサイン：エラー
	 */
	private final static String CHECK_ERROR = "1";
	/**
	 * チェックサイン：成功
	 */
	private final static String CHECK_SUCCESS = "2";

	/**
	 * 登録編集サイン：登録
	 */
	private final static String ADD = "0";
	/**
	 * 登録編集サイン：編集
	 */
	private final static String EDIT = "1";
	/**
	 * 画面モデル
	 */
	private CustomSchemaView view = new CustomSchemaView();

	/**
	 * チェックサイン
	 */
	private String successSign;
	/**
	 * 登録編集サイン
	 */
	private String addEditSign;


	/**
	 * 初期化処理
	 * @return 結果
	 * @throws Exception 例外
	 */
	public String init() throws Exception {

		addEditSign = ADD;

		return SUCCESS;
	}
	/**
	 * 編集する
	 * @return 結果
	 * @throws Exception 例外
	 */
	public String edit() throws Exception {

		addEditSign = EDIT;
		return SUCCESS;
	}
	/**
	 * タイプをセットする
	 * @return 結果
	 * @throws Exception 例外
	 */
	public String setInputType() throws Exception {

		view.setOptionKbn(view.getSetOptionKbn());
		view.setOptionResult(view.getSetOptionResult());
		view.setInputType(view.getSetType());

		return SUCCESS;
	}
	/**
	 * 作成する
	 * @return 結果
	 * @throws Exception 例外
	 */
	public String make() throws Exception {

		String itemName = view.getItemName();
		String inputType = view.getInputType();

		if (StringUtils.isEmpty(itemName)) {
			addFieldError("id", getText("requiredstring", new String[] { "項目名" }));
		}
		if (StringUtils.contains(itemName, "\"")) {
			addFieldError("id", getText("escapeerror", new String[] { "項目名" }));
		}
		if (StringUtils.isEmpty(inputType)) {
			addFieldError("id", getText("requiredstring", new String[] { "入力形式" }));
		}
		if (hasErrors()) {
			successSign = CHECK_ERROR;
			return SUCCESS;
		}
		successSign = CHECK_SUCCESS;
		return SUCCESS;
	}

	@Override
	public CustomSchemaView getModel() {
		return view;
	}

	/**
	 *
	 * @return チェックサイン
	 */
	public String getSuccessSign() {
		return successSign;
	}

	/**
	 *
	 * @return 登録編集サイン
	 */
	public String getAddEditSign() {
		return addEditSign;
	}

	/**
	 *
	 * @param addEditSign 登録編集サイン
	 */
	public void setAddEditSign(String addEditSign) {
		this.addEditSign = addEditSign;
	}


}
